package com.ia.aistream.manager.authen.conf;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/***
 * 取token有效时长
 * @author xiaoyu
 *
 */
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "authen")
public class AuthenConf {
    /**
     * 同一个账号下一个小时之内限制次数
     */
    private int limit;
    /**
     * 限制次数失效时间，单位：秒
     */
    private int limitExpire;

    private Token token;

    @Getter
    @Setter
    public static class Token {
        /**
         * 令牌签发者
         */
        private String issuer;
        /**
         * 令牌自定义标识
         */
        private String header;
        /**
         * 令牌自定义标识
         */
        private String studioHeader;
        /**
         * 令牌自定义标识
         */
        private String tokenKey;
        /**
         * 令牌秘钥
         */
        private String secret;
        /**
         * studio的token秘钥
         */
        private String studioSecret;
        /**
         * 令牌有效期（默认7200秒）
         */
        private int expireTime;

        /**
         * 令牌有效期-FromWeb
         */
        private int webTokenExpire;
        /**
         * 开放接口token 有效期
         */
        private int openApiTokenExpire;
    }


    /***
     * 获取kind对应的token类型
     * @param from
     * @return
     */
    public int defaultTokenExpires(TokenFrom from) {
        switch (from) {
            case WEB:
                return token.webTokenExpire;
            case OPEN_API:
                return token.openApiTokenExpire;
            default:
                return token.expireTime;
        }
    }

}
